perm filename SEEIN.OSA[1,ALS] blob sn#001113 filedate 1972-07-24 generic text, type T, neo UTF8
00010	BEGIN "SEE"
00020	DEFINE ⊂="COMMENT";	⊂ 5/22/72;
00030	⊂	This program analyses TABLES.DAT and reports data which hopefully
00040		give some indication as to their effectiveness;
00050	
00060	REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00070	
00080	DEFINE DATSIZ="1280",BUFEXS="43",BUFSIZ="1323";
00090	DEFINE CR="'15",LF="'12",TB="'11",CRLF="CR&LF",CRLFO="CR&'177&'21";
00095	REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00150	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,EOF,IEOF,EOFA,BRK;
00170	INTEGER I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,INK,II;
00180	INTEGER INTOT;
00190	EXTERNAL PROCEDURE SPOOL(STRING S; INTEGER IOCHAN,FLAGS);
00200	INTEGER ARRAY COHG1,COHB1,COHG2,COHB2[0:7];
00210	INTEGER ARRAY COHG3,COHB3[0:3];
00220	INTEGER ARRAY PH,APH,BPH,CPH[0:4];
00230	INTEGER ARRAY DPH,EPH,FPH[0:3,0:3,0:4];
00240	
00245	TABIN(INTOT);
00345	
00440	N←INTOT;
00450	
00460	OPEN(CHAN3,"DSK",0,0,10,0,0,EOF);
00470	ENTER(CHAN3,"TABSUM.DOC",0);
00480	OUT(CHAN3,TB&"SIGNATURE TABLE SUMMARY as of "&DATIME&CRLF);
00490	
00600	II←0;
00610	FOR I←N*74 STEP 74 UNTIL TABSIZ-75 DO BEGIN
00612	IF II=2 THEN BEGIN OUT(CHAN3,'14); II←0; END;
00615	IF II=0 THEN
00620	OUT(CHAN3,"Name"&TB&"TYPE"&TB&"Learn"&TB&"Gate"&TB&"IN1"&TB&"IN2"&TB&"IN3"&TB&"IN4"&TB&"IN5"&TB&"IN6"&CRLF&LF);
00630	IF LIST[N]≠0 THEN BEGIN IF LIST[N]≠1 THEN BEGIN "DECODE" STRING LEARN;INTEGER K1,K2,K3,K4;
00640	    IF LIST[N+LISSIZ%10]≥CVSIX("Q0") THEN BEGIN
00650	       K←LIST[N+LISSIZ%5]; K1←K LSH -18; K2←(K LSH 18) LSH -30;
00660	       K3←(K LSH 24) LSH -30; K4←(K LSH 30) LSH -30;
00670	       LEARN←CVXSTR(PHLIST[K1])[1 TO 2]&CVXSTR(PHLIST[K2])[1 TO 2]&
00680	             CVXSTR(PHLIST[K3])[1 TO 2]&CVXSTR(PHLIST[K4])[1 TO 2];
00690						  END 
00700	          ELSE LEARN←CVXSTR(LIST[N+LISSIZ%5]);
00710	
00720	  OUT(CHAN3,CVXSTR(LIST[N])&TB&CVXSTR(LIST[N+LISSIZ%10])&
00730	LEARN&TB&CVXSTR(LIST[N+3*LISSIZ%10])&TB&
00740	CVXSTR(LIST[N+4*LISSIZ%10])&TB&
00750	CVXSTR(LIST[N+LISSIZ%2])&TB&CVXSTR(LIST[N+6*LISSIZ%10])&TB&
00760	CVXSTR(LIST[N+7*LISSIZ%10])&TB&CVXSTR(LIST[N+8*LISSIZ%10])&TB&
00770	CVXSTR(LIST[N+9*LISSIZ%10])&CRLF); END "DECODE"; END ELSE DONE;
00775	OUT(CHAN3,CRLF);
00780	
00790	IF LIST[N+LISSIZ%10]<CVSIX("Q0") THEN BEGIN
01000	
01010	K←TABLES[I+1];
01020	INK←(K LSH 6) LSH -30;
01030	
01040		⊂ **** P2 ****;
01050	IF INK=2 THEN BEGIN
01060	
01270	
01280	OUT(CHAN3,"IN2↓ IN1→    OUTPUT VALUES"&CRLF&"      0 1 2 3 4 5 6 7"&CRLF&LF);
01290	FOR J←0 STEP 1 UNTIL 7 DO  BEGIN
01300	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   ");
01310	  FOR K←0 STEP 1 UNTIL 7 DO BEGIN
01320	    L←(J LSH 3)+K+I+10;
01330	    M←TABLES[L]; M←((M LSH 32) LSH -32);
01340	    OUT(CHAN3,CVS(M));
01350	  END;
01360	  OUT(CHAN3,CRLF);
01370	END;
01380	
01390	OUT(CHAN3,CRLF&"IN2↓ IN1→    TOTAL USAGE"&CRLF&"          0     1     2     3     4     5     6     7"&CRLF&LF);
01400	FOR J←0 STEP 1 UNTIL 7 DO  BEGIN
01410	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   "); SETFORMAT(6,0);
01420	  FOR K←0 STEP 1 UNTIL 7 DO BEGIN
01430	    L←(J LSH 3)+K+I+10;
01440	    M←TABLES[L]; O←((M LSH 16) LSH -20); P←(M LSH -20); M←O+P;
01450	    IF M=0 THEN OUT(CHAN3,"      ") ELSE OUT(CHAN3,CVS(M));
01460	  END;
01470	  OUT(CHAN3,CRLFO);	⊂ Delay formfeed;
01480	END;
01490	
01500		⊂ **** P3 ****;
01510	END ELSE IF INK=3 THEN BEGIN
01520	
01790	OUT(CHAN3,CRLF&TB&"OUTPUT VALUES"&CRLF);
01800	OUT(CHAN3,"IN3↓ IN2→ 0         1         2         3"&CRLF&
01810	       "  IN1→ 0 1 2 3   0 1 2 3   0 1 2 3   0 1 2 3"& CRLF&LF);
01820	FOR J←0 STEP 1 UNTIL 3 DO BEGIN
01830	    Q←I+10+(J LSH 4);
01840	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"    ");
01850	  FOR K←0 STEP 1 UNTIL 3 DO BEGIN
01860	    R←Q+(K LSH 2);
01870	    FOR P←0 STEP 1 UNTIL 3 DO BEGIN
01880	      M←TABLES[R+P]; M←((M LSH 32) LSH -32);
01890	      OUT(CHAN3,CVS(M));
01900	    END; OUT(CHAN3,"  ");
01910	  END;  OUT(CHAN3,CRLF);
01920	END; OUT(CHAN3,LF);
01930	
01940	OUT(CHAN3,CRLF&TB&"TOTAL USAGE"&CRLF);
01950	OUT(CHAN3,"IN3↓ IN2→          0                          1                          2  "&
01960	     "                        3"&CRLF&
01970	       "  IN1→    0     1     2     3        0     1     2"&
01980	"     3        0     1     2     3        0     1     2     3"& CRLF&LF);
01990	FOR J←0 STEP 1 UNTIL 3 DO BEGIN
02000	    Q←I+10+(J LSH 4);
02010	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   ");
02020	SETFORMAT(6,0);
02030	  FOR K←0 STEP 1 UNTIL 3 DO BEGIN
02040	    R←Q+(K LSH 2);
02050	    FOR P←0 STEP 1 UNTIL 3 DO BEGIN
02060	      M←TABLES[R+P];
02070	      T←(M LSH -20)+((M LSH 16) LSH -20);
02080	      IF T=0 THEN OUT(CHAN3,"      ") ELSE OUT(CHAN3,CVS(T));
02090	    END; OUT(CHAN3,"   ");
02100	  END;  OUT(CHAN3,CRLFO);	⊂ Delay form feed;
02110	END; OUT(CHAN3,LF);
02120	
02130	END;	⊂ CHANGE TO END ELSE to add 6-input case;
02140	
02150		⊂ **** Q ****;
02160	END ELSE BEGIN	⊂ Start of Q;
02170	IF I>(TABSIZ -149) THEN  DONE;
02180	L←M←P←Q←R←S←T←0;
02190	FOR J←0 STEP 1 UNTIL 63 DO BEGIN
02200	  K←TABLES[I+10+J];
02210	  L←L+((K LSH 2) LSH -20);
02220	  K←TABLES[I+84+J];	⊂ Get second half of Q table;
02230	  M←M+(K LSH - 27);
02240	  P←P+((K LSH 9) LSH -27);
02250	  Q←Q+((K LSH 18) LSH -27);
02260	  R←R+((K LSH 27) LSH -27);
02270	END; SETFORMAT(1,0);
02280	OUT(CHAN3,"Total Usage-  N.A. "&CVS(L)&"   Ph1 "&CVS(M)&"   Ph2 "&CVS(P)&
02290	      "   Ph3 "&CVS(Q)&"   Ph4 "&CVS(R)&CRLF&LF);
02300	
02610	
02620	K←TABLES[I+1];
02630	K←(K LSH 6) LSH -30;
02640	
02650		⊂ **** Q2 ****;
02660	IF INK=2 THEN BEGIN
02670	
02680	OUT(CHAN3,CRLF&"IN2↓ IN1→    OUTPUT VALUES"&CRLF&
02690	"          0           1           2           3           4           5           6           7"&CRLF&
02700	"      NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4  NA 1 2 3 4"&CRLF&LF);
02710	FOR J←0 STEP 1 UNTIL 7 DO  BEGIN
02720	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   ");
02730	  FOR K←0 STEP 1 UNTIL 7 DO BEGIN
02740	    L←(J LSH 3)+K+I+10;
02750	    M←TABLES[L];
02760	    P←((M LSH 18) LSH -33);
02770	    Q←((M LSH 21) LSH -33);
02780	    R←((M LSH 24) LSH -33);
02790	    S←((M LSH 27) LSH -33);
02800	    T←((M LSH 30) LSH -33);
02810	    OUT(CHAN3,CVS(P)&CVS(Q)&CVS(R)&CVS(S)&CVS(T)&"  ");
02820	  END;
02830	  OUT(CHAN3,CRLF);
02840	END;
02850	
02860	OUT(CHAN3,CRLF&"IN2↓ IN1→    TOTAL USAGE"&CRLF&"          0     1     2     3     4     5     6     7"&CRLF&LF);
02870	FOR J←0 STEP 1 UNTIL 7 DO  BEGIN
02880	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   "); SETFORMAT(6,0);
02890	  FOR K←0 STEP 1 UNTIL 7 DO BEGIN
02900	    L←(J LSH 3)+K+I+10;
02910	    M←TABLES[L];
02920	    Q←TABLES[L+74];
02930	    P←((M LSH 2) LSH -20)+(Q LSH -27)+((Q LSH 9) LSH -27)+((Q LSH 18) LSH -27)+((Q LSH 27) LSH -27);
02940	    IF P=0 THEN OUT(CHAN3,"      ") ELSE OUT(CHAN3,CVS(P));
02950	  END;
02960	  OUT(CHAN3,CRLFO);	⊂ Delay form feed;
02970	END;
02980	
02990		⊂ **** Q3 ****;
03000	END ELSE IF INK=3 THEN BEGIN
03010	
03285	
03490	OUT(CHAN3,CRLF&TB&"OUTPUT VALUES"&CRLF);
03500	OUT(CHAN3,"IN3↓ IN2→        0                         1                         2                         3"&CRLF&
03510	       "  IN1→  0     1     2     3       0     1     2     3       0     1     2     3       0     1     2     3"& CRLF&LF);
03520	
03530	FOR J←0 STEP 1 UNTIL 3 DO BEGIN
03540	    Q←I+10+(J LSH 4);
03550	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"    "); SETFORMAT(1,0);
03560	  FOR K←0 STEP 1 UNTIL 3 DO BEGIN
03570	    R←Q+(K LSH 2);
03580	    FOR P←0 STEP 1 UNTIL 3 DO BEGIN
03590	      M←TABLES[R+P];
03600	      O←(M LSH 18) LSH -33;
03610	      S←(M LSH 21) LSH -33;
03620	      T←(M LSH 24) LSH -33;
03630	      U←(M LSH 27) LSH -33;
03640	      V←(M LSH 30) LSH -33;
03650	      OUT(CHAN3,CVS(O)&CVS(S)&CVS(T)&CVS(U)&CVS(V)&" ");
03660	    END; OUT(CHAN3,"  ");
03670	  END;  OUT(CHAN3,CRLF);
03680	END; OUT(CHAN3,LF);
03690	
03700	OUT(CHAN3,CRLF&TB&"TOTAL USAGE"&CRLF);
03710	OUT(CHAN3,"IN3↓ IN2→          0                          1                          2  "&
03720	     "                        3"&CRLF&
03730	       "  IN1→    0     1     2     3        0     1     2"&
03740	"     3        0     1     2     3        0     1     2     3"& CRLF&LF);
03750	FOR J←0 STEP 1 UNTIL 3 DO BEGIN
03760	    Q←I+10+(J LSH 4);
03770	SETFORMAT(2,0);   OUT(CHAN3,CVS(J)&"   ");
03780	SETFORMAT(6,0);
03790	  FOR K←0 STEP 1 UNTIL 3 DO BEGIN
03800	    R←Q+(K LSH 2);
03810	    FOR P←0 STEP 1 UNTIL 3 DO BEGIN
03820	      M←TABLES[R+P];
03830	      T←((M LSH 2) LSH -20);
03840	      M←TABLES[R+P+74];
03850	      T←T+(M LSH -27)+((M LSH 9) LSH -27)+((M LSH 18) LSH -27)+((M LSH 27) LSH -27);
03860	      IF T=0 THEN OUT(CHAN3,"      ") ELSE OUT(CHAN3,CVS(T));
03870	    END; OUT(CHAN3,"   ");
03880	  END;  OUT(CHAN3,CRLFO);	⊂ Delay form feed;
03890	END; OUT(CHAN3,LF);
03900	
03910		⊂ **** Q6 ****;
03920	END ELSE IF INK=6 THEN BEGIN
03930	
03940	OUT(CHAN3,TB&"TOTAL USAGE"&CRLF);
03950	OUT(CHAN3,"IN6↓     IN3→              0                             1"&CRLF&
03960	       "  IN5↓   IN2→      0             1               0             1"&CRLF&
03970	       "    IN4↓ IN1→   0     1       0     1         0     1       0     1"&CRLF&LF);
03980	FOR J←0 STEP 1 UNTIL 1 DO BEGIN
03990	 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
04000	  FOR L←0 STEP 1 UNTIL 1 DO BEGIN
04010	   W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
04020	SETFORMAT(2,0); OUT(CHAN3,"  ");
04030	IF L=0 THEN BEGIN
04040	 IF K=0 THEN OUT(CHAN3,CVS(J)) ELSE OUT(CHAN3,"  ");
04050	 OUT(CHAN3,CVS(K)); END   ELSE OUT(CHAN3,"    ");
04060	OUT(CHAN3,CVS(L)&"    ");
04070	SETFORMAT(5,0);
04080	   FOR M←0 STEP 1 UNTIL 1 DO BEGIN
04090	    FOR O←0 STEP 1 UNTIL 1 DO BEGIN
04100	     FOR P←0 STEP 1 UNTIL 1 DO BEGIN
04110	      X←W+(M LSH 2)+(O LSH 1)+P;
04120	      Q←TABLES[X];
04130	      R←((Q LSH 2) LSH -20);
04140	      Q←TABLES[X+74];
04150	      R←R+(Q LSH -27)+((Q LSH 9) LSH -27)+((Q LSH 18) LSH -27)+((Q LSH 27) LSH -27);
04160	      IF R=0 THEN OUT(CHAN3,"      ") ELSE OUT(CHAN3,CVS(R)&" ");
04170	     END;
04180	OUT(CHAN3,"  ");
04190	    END;
04200	OUT(CHAN3,"  ");
04210	   END;
04220	OUT(CHAN3,CRLF); 
04230	IF L≠0 THEN OUT(CHAN3,LF);
04240	  END;
04250	 END;
04260	END;
04270	OUT(CHAN3,TB&"OUTPUT VALUES"&CRLF);
04280	OUT(CHAN3,"IN6↓     IN3→              0                             1"&CRLF&
04290	       "  IN5↓   IN2→      0             1               0             1"&CRLF&
04300	       "    IN4↓ IN1→   0     1       0     1         0     1       0     1"&CRLF&LF);
04310	SETFORMAT(1,0);
04320	
04330	FOR J←0 STEP 1 UNTIL 1 DO BEGIN
04340	 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
04350	  FOR L←0 STEP 1 UNTIL 1 DO BEGIN
04360	   W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
04370	SETFORMAT(2,0); OUT(CHAN3,"  ");
04380	IF L=0 THEN BEGIN
04390	 IF K=0 THEN OUT(CHAN3,CVS(J)) ELSE OUT(CHAN3,"  ");
04400	 OUT(CHAN3,CVS(K)); END   ELSE OUT(CHAN3,"    ");
04410	OUT(CHAN3,CVS(L)&"      ");
04420	SETFORMAT(1,0);
04430	   FOR M←0 STEP 1 UNTIL 1 DO BEGIN
04440	    FOR O←0 STEP 1 UNTIL 1 DO BEGIN
04450	     FOR P←0 STEP 1 UNTIL 1 DO BEGIN
04460	      X←W+(M LSH 2)+(O LSH 1)+P;
04470	      Q←TABLES[X];
04480	      R←(Q LSH 18) LSH -33;
04490	      S←(Q LSH 21) LSH -33;
04500	      T←(Q LSH 24) LSH -33;
04510	      U←(Q LSH 27) LSH -33;
04520	      V←(Q LSH 30) LSH -33;
04530	OUT(CHAN3,CVS(R)&CVS(S)&CVS(T)&CVS(U)&CVS(V)&" ");
04540	     END;
04550	OUT(CHAN3,"  ");
04560	    END;
04570	OUT(CHAN3,"  ");
04580	   END;
04590	OUT(CHAN3,CRLFO); 
04600	IF L≠0 THEN OUT(CHAN3,LF);
04610	  END;
04620	 END;
04630	END;
04640	END;	⊂ End of INK=6;
04650	I←I+74; N←N+1;
04660	END;	⊂ End of Q;
04670	OUT(CHAN3,CRLF);
04675	II←II+1;
04680	IF I>TABSIZ -75 THEN DONE;
04690	N←N+1; IF LIST[N]=0 THEN DONE; END;
04700	CLOSE(CHAN3);
04710	RELEASE(CHAN3);
04720	SPOOL("TABSUM.DOC",GETCHAN,1);
04730	OUTSTR("Output sent to spooler as TABSUM.DOC");
04740	
04750	END "SEE";